﻿function showReg(obj) {
	if (!obj && !sys.god && !sys.settings.openOutsideReg) return;
	if (refreshWin('showReg')) return;
	if (sys.god)
		onload(obj || {});
	/*else if (!obj)
		confirmx('校外注册仅供校外用户注册使用，<br />校内学生请直接用[本科教学平台]学号与密码即可登陆。<br />'
						+ '只有校内学生可使用OnlineJudge的全部功能，<br />您确定要使用校外注册吗？', onagree);*/
	else
		onagree();

	function onagree() {
		showAgreement({
					height : 360,
					width : 600,
					url : url.regAgreement,
					title : '注册协议',
					success : function() {
						onload(obj || {});
					}
				});
	}

	/*Ext.apply(Ext.form.VTypes, {
				"username" : function(_v) {
					return /^[a-zA-Z0-9\u4e00-\u9fa5_@\.]{5,20}$/.test(_v);
				},
				"usernameText" : '格式不正确！仅支持字母、数字、下划线、中文、@、.。',
				"usernameMask" : /[a-zA-Z0-9\u4e00-\u9fa5_@\.]/i
			});*/

	function onload(obj) {
		var txtusername = new Ext.form.TextField({
					fieldLabel : '用户名',
					name : 'username',
					anchor : '100%',
					//minLength : 5,
					//maxLength : 20,
					allowBlank : false,
					//vtype : 'username'
					validator : function(v) {
						if (/^[a-zA-Z0-9\u4e00-\u9fa5_@\.]+$/.test(v)) {
						    var len = v.replace(/[\u4e00-\u9fa5]/g,"**").length;
						    if(len >= 4 && len <= 20)
								return true;
							else
								return '用户名长度必须为4-20个字符（中文占2个字符）';
						} else
							return '格式不正确！仅支持字母、数字、下划线、中文、@、.';
					}
				});
		var password = new Ext.form.TextField({
			fieldLabel : '密码',
			name : 'password',
			anchor : '100%',
			minLength : 5,
			maxLength : 20,
			allowBlank : false,
			inputType : 'password'
				// value : obj.password
			});
		var password2 = new Ext.form.TextField({
			fieldLabel : '密码确认',
			anchor : '100%',
			allowBlank : false,
			inputType : 'password',
			minLength : 5,
			maxLength : 20,
			validator : function(v) {
				if (!Ext.isEmpty(v)) if (password.getValue() == v)
					return true;
				else
					return '两次密码不一致';
			}
				// value : obj.password
			});
		var nickname = new Ext.form.TextField({
					fieldLabel : '昵称',
					name : 'nickName',
					maxLength : 20,
					anchor : '100%',
					allowBlank : false,
					value : obj.name
				});
		var email = new Ext.form.TextField({
					fieldLabel : 'Email',
					name : 'email',
					maxLength : 40,
					vtype : 'email',
					anchor : '100%',
					allowBlank : false
				});
		var motto = new Ext.form.TextField({
					fieldLabel : '座右铭',
					name : 'motto',
					maxLength : 200,
					anchor : '100%',
					allowBlank : true
				});
		var sid = new Ext.form.TextField({
					fieldLabel : '学号',
					name : 'sid',
					anchor : '100%',
					readOnly : true,
					value : obj.sid
				});
		var name = new Ext.form.TextField({
					fieldLabel : '姓名',
					name : 'name',
					maxLength : 20,
					anchor : '100%',
					allowBlank : true,
					readOnly : !Ext.isEmpty(obj.sid),
					value : obj.name
				});
		var school = new Ext.form.TextField({
					fieldLabel : '学校',
					name : 'school',
					minLength : 3,
					maxLength : 100,
					anchor : '100%',
					allowBlank : false,
					readOnly : !Ext.isEmpty(obj.sid),
					value : obj.school
				});
		var sex = new Ext.form.ComboBox({
					fieldLabel : '性别',
					hiddenName : 'sex',
					mode : 'local',
					triggerAction : 'all',
					valueField : 'value',
					displayField : 'text',
					editable : false,
					allowBlank : false,
					store : new Ext.data.SimpleStore({
								fields : ['value', 'text'],
								data : [['0', '请选择'], ['1', '男'], ['2', '女']]
							}),
					readOnly : !Ext.isEmpty(obj.sid),
					value : obj.sex || '0'
				});
		var birthday = new Ext.form.DateField({
					fieldLabel : '生日',
					name : 'birthday',
					format : 'Y-m-d',
					anchor : '100%',
					allowBlank : true,
					readOnly : !Ext.isEmpty(obj.sid),
					value : obj.birthday ? string2time(obj.birthday) : ''
				});
		var publicinfo = new Ext.form.Checkbox({
					boxLabel : '公开个人信息',
					name : 'publicPersonalInfo',
					checked : true
				});

		var toolbar = new Ext.Toolbar({
					items : [new Ext.Button({
										text : '关闭',
										iconCls : 'cancel-icon',
										handler : function() {
											win.close();
										}
									}), new Ext.Button({
										text : '注册',
										iconCls : 'ok-icon',
										handler : onReg
									})]
				});

		var form = new Ext.form.FormPanel({
					frame : true,
					labelWidth : 80,
					items : [new Ext.form.FieldSet({
										title : '基本资料',
										collapsible : true,
										items : [txtusername, password, password2, nickname, email,
												motto]
									}), new Ext.form.FieldSet({
										title : '个人信息',
										collapsible : true,
										items : [obj.sid ? sid : {}, name, school, sex, birthday,
												publicinfo]
									})],
					fbar : toolbar
				});

		var win = new Ext.Window({
					id : 'showReg',
					title : '用户注册',
					iconCls : 'reg-icon',
					width : 400,
					minWidth : 350,
					autoHeight : true,
					shadow : false,
					items : form
				});
		win.show();
		txtusername.focus(true, 200);

		function onReg() {
			if (!form.getForm().isValid()) {
				alertx('请正确输入数据！');
				return;
			}
			ajaxform({
						form : form,
						url : url.doReg,
						success : function() {
							refreshMainPage();
							alertx('注册成功！');
							win.close();
							if (Ext.isFunction(obj.success)) obj.success();
						}
					});
		}
	}
}